; AAHead.txt
;
; M.J.Austin Nov 1988
;
; Copyright (C) 1988 Level 9 Computing
;
;----
; tables shared between strategy task and AA stuff...
table
; CurrentX=12
; CurrentZ=13
; CurrentH=25
 Hires=12

 begin
 data @Start,@Start ; Dummy - overwritten by "ToMCEnd" vector
.Start
 code +
 data @AcodeFns,@MCFns ; pointers to the major jump blocks


.AcodeFns
; jump table for acode functions called from MC
 goto @AcodeStart
 goto @FGSpecials
 goto @FGSpecialsMovedSprite
 goto @BGSpecials
 goto @Dummy ; SpecialCollision
 goto @DAMSSpecials
 goto @IRQScheduler
 goto @VBL
 goto @HandleCR
 goto @ExtraTask
 goto @StrategyTask
 goto @ErrorHandler
 
.MCFns
; jump table for MC functions called from Acode
; reserve 6 bytes per jump - absolute, long jumps
; poked in by MC
.MCHeroOnceOnlyInit            data @Dummy,@Dummy,@Dummy ;0
.MCHeroInit                    data @Dummy,@Dummy,@Dummy ;1
.MCClearScreen                 data @Dummy,@Dummy,@Dummy ;2

.MCMoveScreen                  data @Dummy,@Dummy,@Dummy ;3
.MCSpecials                    data @Dummy,@Dummy,@Dummy ;4
.MCBuildBackground             data @Dummy,@Dummy,@Dummy ;5
.MCDisplayDestroyedWalls       data @Dummy,@Dummy,@Dummy ;6
.MCMoveAllSprites              data @Dummy,@Dummy,@Dummy ;7
.MCDisplayAllSprites           data @Dummy,@Dummy,@Dummy ;8
.MCTrimEdges                   data @Dummy,@Dummy,@Dummy ;9
.MCDisplayTextLine             data @Dummy,@Dummy,@Dummy ;a
.MCDisplayUpperTextLine        data @Dummy,@Dummy,@Dummy ;b
.MCDoAllTimers                 data @Dummy,@Dummy,@Dummy ;c
.MCCalculateMemoryFree         data @Dummy,@Dummy,@Dummy ;d
.MCHeroInput                   data @dummy,@Dummy,@Dummy ;e
.MCOswrchV1                    data @Dummy,@Dummy,@Dummy ;f
.MCInvertedOswrchV1            data @Dummy,@Dummy,@Dummy ;10
.MCDestroyTempMoved            data @Dummy,@Dummy,@Dummy ;11
.MCDestroyTempFixed            data @Dummy,@Dummy,@Dummy ;12
.MCCloseDown                   data @Dummy,@Dummy,@Dummy ;13
.MCFindSprite                  data @Dummy,@Dummy,@Dummy ;14
.MCSetUpNewSprite              data @Dummy,@Dummy,@Dummy ;15
.MCSprite                      data @Dummy,@Dummy,@Dummy ;16
.MCHandlePlayerInput           data @Dummy,@Dummy,@Dummy ;17
.MCReturnFrameTime             data @Dummy,@Dummy,@Dummy ;18
.MCUpdateFrameTime             data @Dummy,@Dummy,@Dummy ;19
.MCClearRectangle              data @Dummy,@Dummy,@Dummy ;1d
.MCMapBuildBackground          data @Dummy,@Dummy,@Dummy ;1a
.MCPreScrollMap                data @Dummy,@Dummy,@Dummy ;1b
.MCSpecialCheck                data @Dummy,@Dummy,@Dummy ;1c
.MCStartBigExplosion           data @Dummy,@Dummy,@Dummy ;1d
.MCScrollTextLine              data @Dummy,@Dummy,@Dummy ;1e
.MCReCalcSpriteGraphics        data @Dummy,@Dummy,@Dummy ;1f
.MCOsrdch                      data @Dummy,@Dummy,@Dummy ;20
.MCChecksum                    data @Dummy,@Dummy,@Dummy ;21
.MCInit3D                      data @Dummy,@Dummy,@Dummy ;22
.MCDrawObjectV1                data @Dummy,@Dummy,@Dummy ;23
.MCBuildViewMap                data @Dummy,@Dummy,@Dummy ;24
.MCDisplayViewMap              data @Dummy,@Dummy,@Dummy ;25
.MCInitBootPrg                 data @Dummy,@Dummy,@Dummy ;26
.MCReturnSpriteAddress         data @Dummy,@Dummy,@Dummy ;27
.MCNoClipSprite                data @Dummy,@Dummy,@Dummy ;28
.MCCalcScreenAddress           data @Dummy,@Dummy,@Dummy ;29
.MCSaveFile                    data @Dummy,@Dummy,@Dummy ;2a
.MCLoadFile                    data @Dummy,@Dummy,@Dummy ;2b
.MCCopy                        data @Dummy,@Dummy,@Dummy ;2c
.MCAbsChangeListPtr            data @Dummy,@Dummy,@Dummy ;2d
.MCLoadCells                   data @Dummy,@Dummy,@Dummy ;2e
.MCSetUpPtrs                   data @Dummy,@Dummy,@Dummy ;2f
.MCParseInputWord              data @Dummy,@Dummy,@Dummy ;30
.MCInitTask                    data @Dummy,@Dummy,@Dummy ;31
.MCSnooze                      data @Dummy,@Dummy,@Dummy ;32
.MCAddToListPtr                data @Dummy,@Dummy,@Dummy ;33
.MCReserveMemory               data @Dummy,@Dummy,@Dummy ;34
.MCSetUpVariablePtrs           data @Dummy,@Dummy,@Dummy ;35
.MCPreLoadCells                data @Dummy,@Dummy,@Dummy ;36
.MCPlotLogicalScreen           data @Dummy,@Dummy,@Dummy ;37
.MCPlotPhysicalScreen          data @Dummy,@Dummy,@Dummy ;38
.MCUpdateScreen                data @Dummy,@Dummy,@Dummy ;39
.MCUnPlotScreen                data @Dummy,@Dummy,@Dummy ;3a
.MCSetPalette                  data @Dummy,@Dummy,@Dummy ;3b
.MCSetTextWIndow               data @Dummy,@Dummy,@Dummy ;3c
.MCSetGraphicsWindow           data @Dummy,@Dummy,@Dummy ;3d
.MCClearChangeMaps             data @Dummy,@Dummy,@Dummy ;3e
.MCClearTextBuffer             data @Dummy,@Dummy,@Dummy ;3f
.MCCopyTextBuffer              data @Dummy,@Dummy,@Dummy ;40
.MCEnableTextBuffer            data @Dummy,@Dummy,@Dummy ;41
.MCInitSound                   data @Dummy,@Dummy,@Dummy ;42 
.MCStartSound                  data @Dummy,@Dummy,@Dummy ;43
.MCFindObj                     data @Dummy,@Dummy,@Dummy ;44
.MCInitGraphics                data @Dummy,@Dummy,@Dummy ;45
.MCCalcMatrix                  data @Dummy,@Dummy,@Dummy ;46
.MCDrawVector                  data @Dummy,@Dummy,@Dummy ;47
.MCKeyDown                     data @Dummy,@Dummy,@Dummy ;48
.MCInitJoystic                 data @Dummy,@Dummy,@Dummy ;49
.MCReserveChip                 data @Dummy,@Dummy,@Dummy ;4a
.MCSaveProtect                 data @Dummy,@Dummy,@Dummy ;4b
.MCInitScrolling               data @Dummy,@Dummy,@Dummy ;4c
.MCScrollDirection             data @Dummy,@Dummy,@Dummy ;4d
.MCPurgeAllCells               data @Dummy,@Dummy,@Dummy ;4e
.MCSetMaxFrameRate             data @Dummy,@Dummy,@Dummy ;4f
; v1=frame rate in ms, no return.
.MCSetPreloadPalette           data @Dummy,@Dummy,@Dummy ;50
                data @Dummy,@Dummy,@Dummy ;51

; MCSetTextWindow     = Allocate memory for text buffer
;       v1=top screen line
;       v2=number of screen lines
; MCSetGraphicsWindow = Set graphics clipping
;       v1=Left   X
;       v2=Right  X
;       v3=Top    Y
;       v4=Bottom Y
; MCClearChangeMaps   = (Rebuild physical screen from Buffer2)
; MCClearTextBuffer   = Clear one character row of text buffer
;       v1=buffer Y to clear
; MCCopyTextBuffer    = Copy text buffer to physical screen
;       v1=Buffer Y to top of text window
; MCEnableTextBuffer  = Select character output 
;       v1=0, write to TextScreenBase
;       v1=mask: 1=buffers, 2=Logical, 4=Physical

.Dummy
 code -
 prs " bug!"

 code +
.AcodeDelay
; gosub @Delay
; goto @HeroLoop

.AcodeStart
 goto @Start3D

.HandleCR
; MCOSWRCH has requested a cr.
 gosub @DoCR
 return


code -
;
;
; Args for MCDrawObjectV1:
;  V1: object number
;  V2: x coord in pixels
;  V3: z   "
;  V4: h   "
;  V5: flag = -1 for remove object from structure
;              0 for insert object into structure
; 	      +ve draw to screen directly (as a sprite)

; Args for MCSetPalette:
; V1=list number
; V2=offset within list
;
; list:  db x  ) 16 times
;	 db y  ) 
; where yyyy   yyyy    xxxx    xxxx
;       red.   green   blue    RGBI
;         0..7 (VGA)	       (EGA)


